/*
 * @Description:从键盘录入两个正整数，输出他俩的最大公约数和最小公倍数
 * 
 * @Author: rendc
 * 
 * @Date: 2025-07-21 14:02:45
 * 
 * @LastEditors: rendc
 * 
 * @LastEditTime: 2025-07-21 14:30:56
 */

import java.util.Scanner;

public class Test03 {

  public static void main(String[] args) {
    // 从键盘录入两个正整数，
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入第一个正整数，按下回车键结束");
    int num1 = sc.nextInt();
    System.out.println("请输入第一个正整数，按下回车键结束");
    int num2 = sc.nextInt();
    System.out.println("num1:" + num1);
    System.out.println("num2:" + num2);
    // 输出他俩的最大公约数和最小公倍数
    // 方法：计算最大公约数
    // 1. 查什么是最大公约数和最小公倍数
    // 最大公约数 欧几里得算法（辗转相除法）
    // 2. 欧几里得算法？
    // 48 18
    // 【大的数 取余 小的数】
    // 48 % 18 2余12
    // 18 % 12 1余6
    // 12 % 6 2余0 余数为0 结束 6
    // 两个数相同的情况
    if (num1 == num2) {
      System.out.println("最大公约数和最小公倍数都是：" + num1);
      return;
    }
    // 两个数不相同的情况
    // 获取两个数中的最大值
    int max = 0;
    int min = 0;
    if (num1 > num2) {
      max = num1;
      min = num2;
    } else {
      max = num2;
      min = num1;
    }
    // int max = (num1 > num2) ? num1 : num2;
    // int min = (num1 < num2) ? num1 : num2;

    // 循环次数不确定 用while循环
    // 余数等于0的时候循环结束
    int yuNum = max % min;
    // 如果余数不等于0 那么一直相除
    while (yuNum != 0) {
      // 计算
      // int temp = max % min;
      max = min;
      min = yuNum;
      yuNum = max % min;
    }
    System.out.println("最大公约数：" + min);
    // 最小公倍数
    System.out.println("最小公倍数：" + num1 * num2 / min);
  }
}